#ifndef mem_pool_h
#define mem_pool_h

#include "data_processor_def.h"
#include "segment.h"

typedef struct {
    segment_t *Unuse; /* 最低未使用数据段地址 */
    uint32_t Used; /* 已使用的数据段数量 */
    uint32_t Capacity; /* 数据池容量 */
}mem_pool_t;

/**
 *  初始化数据池
 */
mem_pool_t* mem_pool_init(void);
/**
 *  从数据池中申请一个数据段，申请失败则返回0
 */
segment_t* mem_pool_req(void);
/**
 *  释放数据段回数据池
 */
void mem_pool_rel(segment_t *segPtr);
/**
 *  缓存片段拷贝
 */
void mem_pool_move(segment_t *srcPtr, segment_t *dstPtr, uint32_t len);
#endif /* mem_pool_h */
